# frozen_string_literal: true

module Reports::WebCrawlers
  extend ActiveSupport::Concern

  class_methods do
    def report_web_crawlers(report)
      report.labels = [
        {
          type: :string,
          property: :user_agent,
          title: I18n.t("reports.web_crawlers.labels.user_agent"),
        },
        {
          property: :count,
          type: :number,
          title: I18n.t("reports.web_crawlers.labels.page_views"),
        },
      ]

      report.modes = [Report::MODES[:table]]

      report.data =
        WebCrawlerRequest
          .where("date >= ? and date <= ?", report.start_date, report.end_date)
          .limit(200)
          .order("sum_count DESC")
          .group(:user_agent)
          .sum(:count)
          .map { |ua, count| { user_agent: ua, count: count } }
    end
  end
end
